using System;
using Kiwi.Container.DependencyInjection;
using Kiwi.Container.Lifetime;
using Kiwi.Container.Scope;

namespace Kiwi.Container
{
    public interface IComponentRegistration
    {
        Type ActualType { get; }
        IComponentType ComponentType { get; set; }
        IComponentScope ComponentScope { get; set; }
        object Tag { get; set; }
        IEnumerateDependentProperties InjectProperties { get; set; }
        IComponentCacheResolver CacheResolver { get; set; }
        ILifetimeManager LifetimeManager { get; set; }
        IComponentActivator Activator { get; }
    }

    public interface IComponentRegistration<T> : IComponentRegistration
    {
    }
}